package cn.xu.bookstore.cart.domain;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

/*
 * 辅助类
 * 购物车类
 * 购物车有多条购物条目组成
 */
public class Cart {
	//这个map是有序的
	Map<String,CartItem> maps = new LinkedHashMap<String, CartItem>();
	
	
	/*
	 * 计算合计
	 */
	public Double getTotal(){
		//合计=所有条目的小计加在一起
		BigDecimal sum = new BigDecimal(0);
		for(CartItem cartItem : maps.values()){
			BigDecimal subTotal = new BigDecimal(cartItem.getSubtotal());
			sum = sum.add(subTotal);
		}
		
		return sum.doubleValue();
	}
	
	/*
	 * 添加条目到车中
	 */
	public void add(CartItem cartItem){
		
		if(maps.containsKey(cartItem.getBook().getBid())){
			CartItem _cartItem = maps.get(cartItem.getBook().getBid());
			_cartItem.setCount(cartItem.getCount()+_cartItem.getCount());
			maps.put(cartItem.getBook().getBid(), _cartItem);
			
		}else{
			maps.put(cartItem.getBook().getBid(), cartItem);
		}
		
	}
	
	/*
	 * 清空条目
	 */
	public void clear(){
		maps.clear();
	}
	
	/*
	 * 删除指定条目
	 */
	public void remove(String  bid){
		maps.remove(bid);
	}
	
	/*
	 * 获取所有条目
	 */
	public Collection<CartItem> getCartItems(){
		return maps.values();
	}

}
